package com.qf.blog.core.utils;

import com.alibaba.fastjson.JSON;
import com.qf.blog.core.constants.BaseConstants;
import com.qf.blog.dto.EmailDto;
import com.qf.blog.entity.UserEntity;
import com.qf.blog.service.serviceimpl.UserServiceImpl;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * @author zyt
 * @version 1.0
 */
public class EmailUtils {
//    public static void main(String[] args)throws Exception {
//        // 要把自己当作抄送人不然可能会被服务器当作垃圾数据
//
//        // 先创建emaildto的实体类对象
//        EmailDto  emailDto = new EmailDto();
//        // 然后赋值
//        emailDto.setTilte("测试的0000");  // 标题
//        // 内容
//        emailDto.setContent("<a href='http://127.0.0.1:8080/IndexServlet/index'>靓仔！点这边激活</a>");
//        // 邮箱
//        emailDto.setToUser("1428626295@qq.com");
//        EmailUtils.sendEmaiInfolUser(emailDto);
//    }
//
//    public static void sendEmaiInfolUser (EmailDto emailDto) throws Exception {
//        // 创建一个配置文件对象
//        Properties properties = new Properties();
//        //设置服务器的名字
//        // 邮件全部从smtp.163.com服务器
//        properties.setProperty("mail.host","smtp.163.com");
//        //设置邮件的传输协议
//        properties.setProperty("mail.transport.protocol","smtp");
//        // 是否要验证服务器的用户名和密码
//        properties.setProperty("mail.smtp.auth", "true");
//        // 创建客户端和服务器之间的session对象
//        Session session = Session.getInstance(properties);
//        // 把session的debug模式打开 方便查看Email的运行状态
//        session.setDebug(true);
//
//        // 通过session得到transport(传输对象)对象
//        Transport transport =session.getTransport();
//
//        // 使用用户名密码连接上服务器 ，
//        transport.connect("smtp.163.com","18736256598@163.com","QNIGOTGABIDJUVSG");
//
//        // 创建邮件
//        Message message =createSimpleMail(session,emailDto);
//
//        // 发送邮件
//        transport.sendMessage(message,message.getAllRecipients());
//        // 关闭
//        transport.close();
//    }
//
//
//    /**
//     * 邮件的方法
//     * @param session
//     * @param emailDto
//     * @return
//     */
//    public static Message createSimpleMail(Session session, EmailDto emailDto) throws Exception {
//        // 创建邮件对象
//        MimeMessage m = new MimeMessage(session);
//
//        // 发件人是谁 （如下）
//        m.setFrom(new InternetAddress("18736256598@163.com"));
//        // 收件人（如下）
//        //TO表示主要接收人，CC表示抄送人，BCC表示秘密抄送人。
//        //tRecipient（Message.RecipientType type, Address address），用于设置邮件的接收者。
//        //有两个参数，第一个参数是接收者的类型，第二个参数是接收者。
//        m.setRecipient(Message.RecipientType.TO, new InternetAddress(emailDto.getToUser()));
//        // 邮件的标题
//        m.setSubject(emailDto.getTilte());
//        // 邮件的内容  设置文本字符编码
//        m.setContent(emailDto.getContent(),"text/html,charset=UTF-8");
//        // 设置抄送人
//        // TO表示主要接收人，CC表示抄送人，BCC表示秘密抄送人
//        m.setRecipients(Message.RecipientType.CC,InternetAddress.parse("18736256598@163.com"));
//        return m;
//    }
public static void main(String[] args) throws Exception {

    // 避免被服务器当成垃圾邮件，最好把自己给抄送上
    EmailDto emailDto = new EmailDto();
    emailDto.setTilte("测试");
    emailDto.setContent("<a href ='2207.com:8080/IndexServlet/index'> 靓仔！点击这里激活</a>");
    emailDto.setToUser("1428626295@qq.com");
    EmailUtils.sendEmailInfoUser(emailDto);

}

    public static void sendEmailInfoUser(EmailDto emailDto) throws Exception {
        Properties properties = new Properties();

        //设置服务器名称
        properties.setProperty("mail.host", "smtp.163.com"); // 邮件全部发送smtp.163.com服务器
        //设置邮件传输协议
        properties.setProperty("mail.transport.protocol", "smtp");
        //设置是否要验证服务器用户名和密码
        properties.setProperty("mail.smtp.auth", "true");


        // 1.创建客户端与邮箱服务器的Session对象
        Session session = Session.getInstance(properties);

        // 2.开启session的debug模式，方便查看发送email的运行状态
        session.setDebug(true);

        // 3.通过session得到transport传输对象
        Transport transport = session.getTransport();

        // 4.使用用户名密码连接上邮箱服务器,此处的密码需要到邮箱开启服务设置
        transport.connect("smtp.163.com", "18736256598@163.com", "QNIGOTGABIDJUVSG");

        // 5.创建邮件
        Message message = createSimpleMail(session, emailDto);

        // 6.发送邮件
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    }

    private static Message createSimpleMail(Session session, EmailDto emailDto) throws Exception {
        // 创建邮件对象
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人
        message.setFrom(new InternetAddress("18736256598@163.com"));
        // 指明邮件的收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(emailDto.getToUser()));
        // 邮件的标题
        message.setSubject(emailDto.getTilte());
        // 邮件的内容
        message.setContent(emailDto.getContent(), "text/html;charset=UTF-8");

        // 设置抄送人
        message.setRecipients(Message.RecipientType.CC, InternetAddress.parse("18736256598@163.com"));

        return message;
    }


}
